package veterinaria.manager;

import geral.manager.GenericManager;
import geral.manager.UtilManager;
import geral.util.FacesUtil;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.sgc.entities.veterinaria.Especie;
import br.com.sgc.session.GenericSession;

@Named
@ConversationScoped
public class EspecieManager extends GenericManager implements Serializable{
	
	private static final long serialVersionUID = -439692882151383136L;

	@Inject private UtilManager utilManager;
	
	@EJB private GenericSession<Especie> especieSession;
	
	private Especie especie = new Especie();
	
	private List<Especie> especies = new ArrayList<Especie>();
	
	private Boolean showPanelCadastro;

	
	public String list(){
		especies = especieSession.findAll(Especie.class, utilManager.getSegurancaManager().getUsuarioLogado().getClinica().getId());
		showPanelCadastro = false;
		return "formEspecie";
	}
	
	public String prepareSave(){
		showPanelCadastro = true;
		especie = new Especie();
		return "formEspecie";
	}
	
	public String save(){
		try {
			especie.setClinica(utilManager.getSegurancaManager().getUsuarioLogado().getClinica());
			especieSession.save(especie);
			FacesUtil.mensInfo("Espécie salva com sucesso");
			especie = new Especie();
			return list();
		} catch (Exception e) {
			FacesUtil.mensErro(e.getMessage());
			return null;
		}
	}
	
	public String prepareUpdate(){
		especie = especieSession.findById(Especie.class, especie.getId(), true);
		showPanelCadastro = true;
		return "formEspecie";
	}
	
	public String update(){
		try {
			especie.setClinica(utilManager.getSegurancaManager().getUsuarioLogado().getClinica());
			especieSession.update(especie);
			especie = new Especie();
			FacesUtil.mensInfo("Espécie atualizado com sucesso");
			return list();
		} catch (Exception e) {
			FacesUtil.mensErro(e.getMessage());
			return null;
		}
	}

	public UtilManager getUtilManager() {
		return utilManager;
	}

	public void setUtilManager(UtilManager utilManager) {
		this.utilManager = utilManager;
	}

	public GenericSession<Especie> getEspecieSession() {
		return especieSession;
	}

	public void setEspecieSession(GenericSession<Especie> especieSession) {
		this.especieSession = especieSession;
	}

	public Especie getEspecie() {
		return especie;
	}

	public void setEspecie(Especie especie) {
		this.especie = especie;
	}

	public List<Especie> getEspecies() {
		return especies;
	}

	public void setEspecies(List<Especie> especies) {
		this.especies = especies;
	}

	public Boolean getShowPanelCadastro() {
		return showPanelCadastro;
	}

	public void setShowPanelCadastro(Boolean showPanelCadastro) {
		this.showPanelCadastro = showPanelCadastro;
	}
	
}
